﻿using FluentAssertions.Primitives;
using Gym.Domain.Common.ValueObjects;
using Gym.Domain.SessionAggregate;

namespace Gym.Domain.UnitTests.TestUtils.Sessions
{
    public static class SessionFactory
    {
        public static Session CreateSession(
            string name = Constants.Session.Name,
            string description = Constants.Session.Description,
            Guid? roomId = null,
            Guid? trainerId = null,
            int maxParticipants = Constants.Session.MaxParticipants,
            DateOnly? date = null,
            TimeRange? time = null,
            List<SessionCategory>? categories = null,
            Guid? id = null)
        {
            return new Session(
                name:name,
                description: description,
                maxParticipants: maxParticipants,
                roomId: roomId ?? Constants.Room.Id,
                trainerId: trainerId ?? Constants.Trainer.Id,
                date ?? Constants.Session.Date,
                time ?? Constants.Session.Time,
                categories: categories??Constants.Session.Categories,                
                id: id ?? Constants.Session.Id);
        }
    }
}
